package com.行为型模型.R观察者模式;

/**
 * 1，优点：
 * 	降低了目标与观察者之间的耦合关系，两者之间是抽象耦合关系。 被观察者发送通知，所有注册的观察者都会收到信息【可以实现广播机制】
 * 2，缺点：
 * 	如果观察者非常多的话，那么所有的观察者收到被观察者发送的通知会耗时 如果被观察者有循环依赖的话，
 * 	那么被观察者发送通知会使观察者循环调用，会导致系统崩溃
 * 	 使用场景：
 * 对象间存在一对多关系，一个对象的状态发生改变会影响其他对象。 当一个抽象模型有两个方面，其中一个方面依赖于另一方面时。
 * JDK中提供的实现：
 * 	在 Java 中，通过 java.util.Observable 类和 java.util.Observer 接口定义了观察者模 式，只要实现它们的子类就可以编写观察者模式实例。
 */
public class Test {
    public static void main(String[] args) {
        SubscriptionSubject subscriptionSubject=new SubscriptionSubject();
        //创建微信用户
        WeixinUser weixinUser1=new WeixinUser("张三");
        WeixinUser weixinUser2=new WeixinUser("李四");
        WeixinUser weixinUser3=new WeixinUser("王五");
        //订阅公众号
        subscriptionSubject.attach(weixinUser1);
        subscriptionSubject.attach(weixinUser2);
        subscriptionSubject.attach(weixinUser3);
        //公众号更新发出消息给订阅的微信用户
        subscriptionSubject.notifyUser("快看！ 更新了！");



    }
}
